package edu.mercer.sse554.bkp;

/**
 * Unchecked Exception for Backup Application.<p>
 * 
 * Visitor Pattern: accepts visitor for logging this unchecked exception.<p>
 * 
 * @see VisitableLogging
 * 
 * @see BackupErrorLoggingVisitor 
 */

public class BackupUncheckedException extends RuntimeException 

	implements VisitableLogging<Boolean, 
								BackupErrorLoggingVisitor>
{
	private static final long serialVersionUID = 4027607634054003L;

	/**
	 * Create new custom unchecked exception: BackupUncheckedException.<p>
	 */
		
	BackupUncheckedException()
	{
		super();
		
	}//constructor


	/**
	 * Create new custom unchecked exception: BackupUncheckedException.<p>
	 * 
	 * @param messageIn - String descriptive message to include when creating
	 * 	this unchecked exception
	 */
	
	BackupUncheckedException(final String messageIn)
	{
		super(messageIn);
		
	}//constructor
	

	/**
	 * Create new custom unchecked exception: BackupUncheckedException.<p>
	 * 
	 * @param exceptionIn - Exception, checked to be wrapped in this 
	 * 	unchecked exception
	 */
	
	BackupUncheckedException(final Exception exceptionIn)
	{
		super(exceptionIn);
		
	}//constructor
	

	/**
	 * Create new custom unchecked exception: BackupUncheckedException.<p>
	 * 
	 * @param throwableIn - Throwable to be wrapped in this unchecked 
	 * 	exception
	 */
	
	BackupUncheckedException(final Throwable throwableIn)
	{
		super(throwableIn);
		
	}//constructor


	/**
	 * Create new custom unchecked exception: BackupUncheckedException.<p>
	 * 
	 * @param errorIn - Error to be wrapped in this unchecked exception
	 */
	
	BackupUncheckedException(final Error errorIn)
	{
		super(errorIn);
		
	}//constructor


	/**
	 * Create new custom unchecked exception: BackupUncheckedException.<p>
	 * 
	 * @param errDescription - String descriptive message to include when 
	 * 	creating this unchecked exception
	 * 
	 * @param errorIn - Throwable to be wrapped in this unchecked exception
	 */
	
	BackupUncheckedException(final String errDescription, 
	 						 final Throwable errorIn)
	{
		super(errDescription, errorIn);
		
	}//constructor

	
	@Override
	public Boolean accept( final BackupErrorLoggingVisitor visitor ) 
	{
		return visitor.visit( this );
		
	}//method	

	
}//class
